package com.crm.dao;

import com.crm.model.Customer;

import java.util.List;
import java.util.Date;

/**
 * @author <a href="mailto:huang0510@hotmail.com">HuangHuang</a>
 * @version $Id$
 */
public interface ICustomerDao {

    /**
     * 保存客户信息实体。
     *
     * @param customer 客户信息实体域对象。
     */
    void save(Customer customer);

    public List getCustomerAll();
    public List getCustomerNameAll();
    public Customer getCustomerById(String customerId);
    public List getCustomersByUserCode(String userCode);

    List getCustomerByWeek(String weekOfYear);
    List getCustomerByWeek(String userCode, String weekOfYear);

    /**
     * 按关键字检索客户资料。
     *
     * @param userGroup 用户组，管理员组可以检索所有，用户组只能查看自己的客户资料
     * @param userCode  用户编号
     * @param customerName 客户名称
     * @param country      国家
     * @param website      网站
     * @param product     业务类型/产品
     * @param sourceId    客户来源
     * @param levelId     客户等级
     * @param userId      用户ID
     * @param fDate       查询范围开始时间
     * @param tDate       查询范围结束时间
     * @return List
     */
    List getCustomersByKeyword(String userGroup, String userCode, 
                               String customerName, String country,
                               String website, String product,
                               String sourceId, String levelId, String userId,
                               Date fDate, Date tDate);

    /**
     * 删除指定的客户。
     *
     * @param customer 一个客户。
     */
    void delete(Customer customer);

    /**
     * 获取客户网址列表。
     *
     * @return 返回客户网址列表。
     */
    List getCustomerWebsite();

    /**
     * 获取除指定名称之外的所有用户名称列表。
     *
     * @param id 客户记录ID
     * @return 返回用户名称列表。
     */
    List getCustomerNameExclude(String id);

    List getRecycleCust(String uid);

    List getCustomerWebsiteExclude(String id);
}
